package collection;

/**
 * 对字符串集合进行排序
 */
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class SortString {
    public static void main(String[] args) {
        //中文字符串排序
        List<String> list = new ArrayList<>();
        list.add("王克晶");
        list.add("传奇老师很帅");
        list.add("伟超老师");
        System.out.println("list原始数据: "+list);//输出原始数据, 无序

        //Collections.sort(list);//自然排序
        Collections.sort(list, new Comparator<String>() {
            /*
            compare()方法用于定义o1和o2的大小, 并且返回值表达大小关系
            1)返回值是0, 表示o1和o2相等
            2)如果返回值>0, 表示o1>o2
            3)如果返回值<0, 表示o1<o2
            结论:
                > 前面的减后面的 ----- 升序
                > 后面的减前面的 ----- 降序
             */
            public int compare(String o1, String o2) {
                return o1.length() - o2.length();//升序排列
                //return o2.length() - o1.length();//降序排列
            }
        });
        System.out.println("list排序后数据: "+list);//有序(从小到大)

        //英文字符串排序
        /*
        List<String> list = new ArrayList<>();
        list.add("jack");
        list.add("rose");
        list.add("tom");
        list.add("jerry");
        list.add("black");
        list.add("kobe");
        System.out.println("list原始数据: "+list);//输出原始数据

        /*
        对英文字符串排序时, 会按照首字母大ASCII码来排
        若首字母相同, 则比较第二个字母的ASCII码排序
         *

        Collections.sort(list);//小到大
        System.out.println("list自然排序: "+list);//有序(阿斯克码排序)
        */
    }
}
